package com.uex.dev.manage.admin.service.impl;

import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.google.common.base.Preconditions;
import com.uex.dev.manage.admin.dao.DeviceUhubDao;
import com.uex.dev.manage.admin.po.DeviceUhubPO;
import com.uex.dev.manage.admin.service.IDeviceUhubService;
import com.uex.dev.manage.admin.utils.LogUtil;
import com.uex.dev.manage.admin.vo.device.UhubInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wangchao
 * @since 2024-02-22
 */
@Service
public class DeviceUhubServiceImpl extends ServiceImpl<DeviceUhubDao, DeviceUhubPO> implements IDeviceUhubService {

    @Override
    public UhubInfo getUhubInfo(Integer deviceId) {
        Preconditions.checkArgument(ObjectUtils.isNotNull(deviceId), "设备Id不能为空");
        UhubInfo uhubInfo = this.selectJoinOne(UhubInfo.class, new MPJQueryWrapper<DeviceUhubPO>()
                .select("t.*,td.device_modelid as model_id,td.device_model")
                .leftJoin("t_device td on t.device_id = td.id")
                .eq("t.device_id", deviceId));
        Preconditions.checkArgument(ObjectUtils.isNotNull(uhubInfo), "设备不存在");
        LogUtil.log(deviceId, "获取云盾基本信息");
        return uhubInfo;
    }

    @Override
    public void updateUhub(UhubInfo uhubUpdateInfoReq) {
        Preconditions.checkArgument(ObjectUtils.isNotNull(uhubUpdateInfoReq.getDeviceId()), "设备Id不能为空");
        DeviceUhubPO uhub = this.getById(uhubUpdateInfoReq.getDeviceId());
        Preconditions.checkArgument(ObjectUtils.isNotNull(uhub), "设备Id不存在");
        BeanUtils.copyProperties(uhubUpdateInfoReq, uhub);
        LogUtil.log(uhub.getDeviceId(), "更新云盾基本信息");
        this.updateById(uhub);
    }
}
